<!-- 在script 标签上使用setup，可以不用再使用return的写法了 -->
<!-- 其中 setup 标记的 script 必须是单独的，不能和export等其他共用 -->
<!-- 可以使用  npm i vite-plugin-vue-setup-extend -D 插件替换下面的写法，直接将组件名称定义写到script的name属性上 -->
<!--<script lang="ts">
export default {
  name: 'Person',
}
</script>-->

<!-- 可以使用  npm i vite-plugin-vue-setup-extend -D 插件替换下面的写法，直接将组件名称定义写到script的name属性上 -->
<!-- 如果没有定义组件名称，没有给script写name定义组件名称的话，默认就是组件的名称。 -->
<script setup lang="ts" name="Person">
//  使用hooks 进行封装，其中hooks的本质就是一个一个可以调用的函数
import useDog from '@/hooks/useDog.ts'
import useSum from '@/hooks/useSum.ts'

// 直接使用解构的功能，解构hooks里面的对象、函数等返回数据
const { getDog, dogList } = useDog()
const { sum, bigSum } = useSum()
</script>

<template>
  <div class="person">
    <h1>当前求和为：{{ sum }}</h1>
    <h1>当前求大和为：{{ bigSum}}</h1>
    <button @click="sum += 1">点我sum + 1</button>
    <hr />
    <img v-for="(dog, index) of dogList" :src="dog" :key="index" />
    <br />
    <button @click="getDog()">再来一只狗</button>
  </div>
</template>

<style scoped>
.person {
  background-color: #dab649;
  box-shadow: 0 0 10px;
  border-radius: 10px;
  padding: 20px;
}

button {
  margin: 0 10px;
}

img {
  height: 100px;
  margin-right: 10px;
}
</style>
